﻿using System;
using System.Web;

namespace ServiceStack.Redis.Extend.Web
{
    public class RedisHandler : IHttpHandler
    {

        static ServiceStack.Redis.Extend.RedisClient mClient = new RedisClient();

        /// <summary>
        /// 您将需要在您网站的 web.config 文件中配置此处理程序，
        /// 并向 IIS 注册此处理程序，然后才能进行使用。有关详细信息，
        /// 请参见下面的链接: http://go.microsoft.com/?linkid=8101007
        /// </summary>
        #region IHttpHandler Members

        public bool IsReusable
        {
            // 如果无法为其他请求重用托管处理程序，则返回 false。
            // 如果按请求保留某些状态信息，则通常这将为 false。
            get { return true; }
        }

        private string Get(string key, Type type)
        {
            return mClient.GetJson(key); ;
        }

        private string List(string key, Type type, string index, string size)
        {
            if (string.IsNullOrEmpty(index))
                return mClient.ListToJson(key);
            return mClient.ListToJson(key,int.Parse(index),int.Parse(size));

        }

        public void ProcessRequest(HttpContext context)
        {
            string cmd = context.Request["cmd"];
            string key = context.Request["key"];
            Type type = Type.GetType(context.Request["type"]);
            string result = null;
            switch (cmd.ToLower())
            {
                case "get":
                    result = Get(key, type);
                    break;
                case "list":
                    result = List(key, type,context.Request["index"],context.Request["size"]);
                    break;
            }
            if (result != null)
            {
                context.Response.Write(result);
            }


        }

        #endregion
    }
}
